// 封装数据库的操作
// 1. 导入mysql包
const mysql = require("mysql")
// 导入配置文件
const { mysql: MySQLCon } = require("../config/mysql.config")
const con = mysql.createConnection(MySQLCon)
//3.连接数据库
con.connect()

/**
 * 获取所有数据
 * @param {string} sql : 执行的sql语句
 * @return {promise}
 */
function getAll(sql) {
  return new Promise((resolve, reject) => {
    con.query(sql, (err, data) => {
      if (err) reject(err)
      resolve(data)
    })
  })
}

/**
 * 获取一个数据
 * @param {string} sql : 执行的sql语句
 * @return {promise}
 */
function getOne(sql) {
  return new Promise((resolve, reject) => {
    con.query(sql, (err, data) => {
      if (err) {
        reject(err)
      }
      data.length != 0 ? resolve(data[0]) : resolve(null)
    })
  })
}

/**
 * 增、删、改、查
 * @param {string} sql : 执行的sql语句
 * @return {promise}
 */
function exec(sql) {
  return new Promise((resolve, reject) => {
    // 执行sql语句
    con.query(sql, (err, data) => {
      if (err) reject(err)
      resolve(data)
    })
  })
}

//导出三个方法
module.exports = { getAll, getOne, exec }
